package com.cr.crsystem.system.service.impl;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import okhttp3.Response;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Service
public class ZnwdServiceImpl {
    // 存储消息
    public List<ObjectNode> messageList = new ArrayList<>();

    // 提示词工程
    public String getPrompt(String carColor,String carBrand){
        return "假如我有一辆车为“大众TROC”，它的基本信息为：\n" +
                "{\n" +
                "  \"brand\":\"大众TROC\",\n" +
                "  \"seatingCapacity\":\"5座\",\n" +
                "  \"color\":\"白色\",\n" +
                "  \"price\":\"20万元\",\n" +
                "  \"year\":\"2018\",\n" +
                "  \"detail\":\"大众TROC，中文名称为“探歌”，是一汽-大众旗下的一款紧凑型SUV，自上市以来凭借其时尚的外观、宽敞的空间、丰富的配置以及出色的动力性能赢得了市场的广泛认可。\"\n" +
                "}\n" +
                "\n" +
                "我想租一辆车，请告诉我\""+carColor+carBrand+"\"的详情信息，请根据以上的方式回答，有多种答案的情况下，可以为最常见的一种，答案不要出现其他字眼\n";
    }

    // 获取当前的所有消息
//    public void getAllMessage(){
//        for (ObjectNode objectNode : messageList) {
//            System.out.println(objectNode.get("role"));
//            if(objectNode.get("role").toString().equals("\"user\"")) {
//                System.out.println("用户："+objectNode.get("content").toString());
//            }else{
//                System.out.println("客服："+objectNode.get("content").toString());
//            }
//        }
//        System.out.println();
//    }

    /**
     *   提问（一轮）
     */
    public String question(String message){
        ObjectMapper mapper = new ObjectMapper();
        // 创建一个 ObjectNode
        ObjectNode root = mapper.createObjectNode();
        // 创建一个 ArrayNode 用于存储消息
        ObjectNode userMessage = mapper.createObjectNode();
        userMessage.put("role","user");
        userMessage.put("content", message);
        // 将消息添加到 ArrayNode
        ArrayNode messagesArray = mapper.createArrayNode().add(userMessage);
        // 将 ArrayNode 添加到根节点
        root.set("messages", messagesArray);
        return root.toString();
    }

    /**
     *   问答（多轮）
     */
//    public String questionOrAnswer(String role,String message){
//        ObjectMapper mapper = new ObjectMapper();
//        // 创建一个 ObjectNode
//        ObjectNode root = mapper.createObjectNode();
//        // 创建一个 ArrayNode 用于存储消息
//        ObjectNode userMessage = mapper.createObjectNode();
//        userMessage.put("role",role);
//        userMessage.put("content", message);
//        // 重复使用，多轮问答
//        messageList.add(userMessage);
//        // 将消息添加到 ArrayNode
//        ArrayNode messagesArray = mapper.createArrayNode()
//                .addAll(messageList);
//        // 将 ArrayNode 添加到根节点
//        root.set("messages", messagesArray);
//        return root.toString();
//    }

    // 处理结果并保存
    public String getResult(Response response) throws IOException {
        String string = response.body().string();
        System.out.println(string);
        // 解析 JSON 字符串
        ObjectMapper mapper = new ObjectMapper();
        JsonNode rootNode = mapper.readTree(string);
        // 获取 result 值
        return rootNode.get("result").asText();
    }
}
